package sicnu.cs.aps.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;
import sicnu.cs.aps.domain.dto.ActivityInfoDto;
import sicnu.cs.aps.domain.entity.Activity;
import sicnu.cs.aps.domain.form.ActivityAuditForm;
import sicnu.cs.aps.domain.form.ActivityQueryForm;
import sicnu.cs.aps.domain.form.QueryForm;
import sicnu.cs.aps.domain.vo.SimpleActivityVo;

import java.util.List;

/**
 * @author lucker
 * @date 2022/5/26 16:20
 */
public interface IActivityService extends IService<Activity> {

    /**
     * 创建活动
     *
     * @param activity 活动类
     * @return 创建活动的ID
     */
    Long createActivity(Activity activity);



    /**
     * 更新活动审核信息
     *
     * @param form 更新列表
     */
    void doActivityAudit(ActivityAuditForm form);

    /**
     * 分页查询活动审核情况
     *
     * @param form           分页信息
     * @param roleUniversity 角色种类
     * @return 活动审核信息列表
     */
//    PageInfo<ActivityAuditVo> listActivityAudit(ActivityAuditQueryForm form, String roleUniversity);

    /**
     * 筛选活动
     *
     * @param queryForm 分页查询表
     * @param collegeId 学院id
     * @return PageInfo分页信息
     */
    PageInfo<Activity> getActivityList(QueryForm queryForm, Long collegeId);

    /**
     * 获取所有活动
     *
     * @return 所有活动信息
     */
    List<SimpleActivityVo> getAllActivity();

    /**
     * 通过小队id列表查询所有活动
     *
     * @param teamIds 小队id列表
     * @return 活动列表
     */
    List<Activity> listByTeamIds(@Param("teamIds") List<Long> teamIds);

    /**
     * 查询活动统计信息列表
     * @param queryForm 分页信息 && type 1-已发布活动；2-未发布的活动（未到报名时间）;3-历史活动；其他：全部活动
     * @return 活动统计信息列表
     */
    PageInfo<ActivityInfoDto> selectActivityInfoList(ActivityQueryForm queryForm);
}
